#ifndef __PRNG_H__
#define	__PRNG_H__ 1

#include <stdint.h>

class IPrng
{
public:

    IPrng() { }
    virtual ~IPrng() { }

    /**
     * calculates greatest common divisor between two values
     * @param pVal1
     * @param pVal2
     */
    static int16_t ggt(int16_t pVal1, int16_t pVal2);

    /**
     * calculates random number
     */
    virtual int16_t getRand();

private:

    const static int16_t sDefaultSeed = 1;
    const static int16_t sDefaultMultiplier = 7;
    const static int16_t sDefaultIncrement = 5;
    const static int16_t sDefaultModulo = 29;

    int16_t mSeed;
    int16_t mMultiplier;
    int16_t mIncrement;
    int16_t mModulo;
};

#endif	/* __PRNG_H__ */
